home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #288 (1993)(Rhein-Sieg-Soft).zip / Franz PD Disk #288 (1993)(Rhein-Sieg-Soft).adf / Knobeln / NIKOLAUS.LST < prev    next >
File List  |  1992-05-25  |  8KB  |  262 lines

  1. ' *******************************
  2. ' * Das Haus des Nikolaus V1.00 *
  3. ' *    © 1992 by henry König    *
  4. ' * Bornheide 71, 2 hamburg 53  *
  5. ' *******************************
  6. init                            ! Bildschirm und Fenster öffnen
  7. farben.setzen                   ! Farben setzen
  8. menueein                        ! Menüs einschalten
  9. info                            ! Startinfo
  10. programmkopf
  11. ON MENU GOSUB menÜkontrolle
  12. REPEAT
  13.   SLEEP
  14. UNTIL ende!
  15. CLOSEW #1                       ! Fenster schließen
  16. CLOSES 1                        ! Bildschirm schließen
  17. END                             ! system
  18. PROCEDURE auflÖsung             !
  19.   programmkopf
  20.   PRINT AT(1,25);"Weiter mit Taste oder rechter Maustaste!"
  21.   PRINT AT(4,31);"Ich kenne auch keine andere Lösung!"
  22.   COLOR 3                       ! rot
  23.   CIRCLE 100,160,2              ! Links unten
  24.   CIRCLE 100,80,2               ! Giebel links
  25.   CIRCLE 150,40,2               ! Giebel
  26.   CIRCLE 200,80,2               ! Giebel rechts
  27.   CIRCLE 200,160,2              ! rechts unten
  28.   CIRCLE 150,120,2              ! Hausmitte
  29.   COLOR 5                       ! gelb
  30.   LINE 100,160,100,80           ! linke Hauswand
  31.   tastendruck
  32.   LINE 100,80,150,40            ! zum Giebel
  33.   tastendruck
  34.   LINE 150,40,200,80            ! zur rechten Hauswand
  35.   tastendruck
  36.   LINE 200,80,100,80            ! nach links
  37.   tastendruck
  38.   LINE 100,80,200,160           ! nach unten rechts
  39.   tastendruck
  40.   LINE 200,160,100,160          ! zur linken hauswand
  41.   tastendruck
  42.   LINE 100,160,200,80           ! nach rechts oben
  43.   tastendruck
  44.   LINE 200,80,200,160           ! rechte Hauswand
  45.   tastendruck
  46. RETURN
  47. PROCEDURE beenden               ! Programm beenden
  48.   ALERT 0,"Wollen Sie aufhören",1,"Ende|Weiter",wahl%
  49.   ende!=(wahl%=1)
  50. RETURN
  51. PROCEDURE daten                 ! Daten für Menüs und Anweisungen
  52.   menue.daten:
  53.   DATA "Projekt "
  54.   DATA "+I Info                 "
  55.   DATA " Spiel starten "
  56.   DATA " Auflösung "
  57.   DATA "+Q Programm beenden "
  58.   DATA ""
  59.   DATA "*"
  60. RETURN
  61. PROCEDURE info
  62.   programmkopf
  63.   PCOLOR 3,0
  64.   PRINT AT(10,13);"© 1992 by Henry König,"
  65.   PRINT AT(5,15);"Bornheide 71, 2000 Hamburg 53"
  66.   PCOLOR 1,0
  67.   PRINT AT(2,18);"Dieses Programm darf kopiert werden"
  68.   PRINT AT(2,20);"und in jede PD-Serie übernommen werden."
  69.   tastendruck
  70. RETURN
  71. PROCEDURE mauss                 ! Punkte an Mausposition zeichnen
  72.   CLR neu%                      ! Einstiegswert für die Schleife
  73.   COLOR 5
  74.   WHILE neu%=0
  75.     mausk%=MOUSEK               ! Mausknopf
  76.     x=MOUSEX                    ! Rechtswert der Maus
  77.     y=MOUSEY                    ! Hochwert der Maus
  78.     IF mausk% THEN              ! Mausknopf gedrückt?
  79.       LINE x,y,MOUSEX,MOUSEY    ! ja, dann Punkt (Linie) zeichnen
  80.     ENDIF
  81.     IF x>225 AND x<=300 AND y>=175 AND y<=200 AND mausk% THEN !  NEU-Taste
  82.       neu%=1                    ! Neu-Schalter zum Abbruch setzen
  83.     ENDIF
  84.   WEND
  85.   COLOR 1,0                     ! weiß auf grauen Grund
  86.   PCOLOR 1,0                    ! weiße Schrift auf grauen Grund
  87. RETURN
  88. PROCEDURE menÜkontrolle         ! Hauptmenü
  89.   mn%=MENU(0)                   ! Menüpunkt
  90.   SELECT mn%
  91.   CASE 1
  92.     info
  93.   CASE 2
  94.     CLR neu%
  95.     programmkopf
  96.     startbild                   ! Startbild zeichnen
  97.     tastendruck                 ! auf Tastendruck warten
  98.     zeichnen                    ! Zeichenfeld zeichen und Zeichnen
  99.   CASE 3
  100.     auflÖsung
  101.   CASE 4
  102.     beenden
  103.   ENDSELECT
  104.   programmkopf
  105. RETURN
  106. PROCEDURE menueein              ! Menüs einschalten
  107.   MENU KILL
  108.   RESTORE menue.daten
  109.   FOR menue%=0 TO 10
  110.     READ x$
  111.     EXIT IF x$="*"
  112.     menue$(menue%)=x$
  113.   NEXT menue%
  114.   DEC menue%                    !
  115.   menue$(menue%+6)=""
  116.   menue$(menue%+7)=""
  117.   MENU menue$()
  118. RETURN
  119. PROCEDURE programmkopf
  120.   CLS
  121.   COLOR 2                       ! schwarze Box
  122.   PBOX 1,1,319,20
  123.   COLOR 0                       ! grau
  124.   PBOX 6,4,316,17
  125.   COLOR 4                       ! hellgrau
  126.   LINE 6,4,316,4
  127.   LINE 6,4,6,17
  128.   PCOLOR 5,0
  129.   PRINT AT(2,2);"D a s  H a u s  d e s  N i k o l a u s"
  130.   PCOLOR 1,0
  131.   programmfuss
  132. RETURN
  133. PROCEDURE programmfuss          ! Anweisungsboxen zeichnen
  134.   COLOR 2                       ! schwarz
  135.   PBOX 1,(27*8)-10,319,(32*8)   ! schwarze Box
  136.   COLOR 0                       ! grau
  137.   PBOX 6,(27*8)-7,316,(28*8)+4  ! graue Box
  138.   PBOX 6,(29*8)+2,316,(32*8)-4  ! 2. graue Box
  139.   COLOR 4                       ! hellgrau
  140.   BOX 7,(27*8)-7,316,(32*8)-3
  141.   LINE 7,(29*8)+2,316,(29*8)+2
  142.   LINE 16,(29*8)-6,319-16,(29*8)-6
  143.   LINE 16,(29*8)+5,319-16,(29*8)+5
  144.   LINE 319-16,(29*8)-6,319-16,(26*8)+4  ! senkrechter Strich
  145.   LINE 16,(29*8)+5,16,(31*8)+2  ! senkrechter Strich
  146.   COLOR 2                       ! schwarz
  147.   LINE 7,(32*8)-3,316,(32*8)-3  ! schwarze Linie
  148.   LINE 316,(27*8)-7,316,(32*8)-3
  149.   LINE 16,(27*8)-4,319-16,(27*8)-4
  150.   LINE 16,(31*8)+2,319-16,(31*8)+2
  151.   LINE 16,(29*8)-6,16,(26*8)+4  ! senkrechter Strich
  152.   LINE 319-16,(29*8)+5,319-16,(31*8)+2    ! senkrechter Strich
  153. RETURN
  154. PROCEDURE startbild
  155.   PCOLOR 5,0                    ! gelb
  156.   PRINT AT(1,5);"Sie kennen doch bestimmt das Haus vom "
  157.   PRINT AT(1,6);"Nikolaus. Versuchen Sie doch einmal"
  158.   PRINT AT(1,7);"das Haus mit vier Giebeln";
  159.   PCOLOR 3,0
  160.   PRINT " (rote Linien)"
  161.   PCOLOR 5,0                    ! gelb
  162.   PRINT AT(1,8);"ohne abzusetzen u. ohne doppelte Linien,"
  163.   PRINT AT(1,9);"zu zeichnen."
  164.   COLOR 5                       ! gelb
  165.   FOR x=0 TO 60 STEP 0.5
  166.     PLOT 180-x,180
  167.   NEXT x
  168.   FOR x=0 TO 60 STEP 0.5
  169.     PLOT 120,180-x
  170.   NEXT x
  171.   FOR x=0 TO 30 STEP 0.5
  172.     PLOT 120+x,120-x
  173.   NEXT x
  174.   FOR x=0 TO 30 STEP 0.5
  175.     PLOT 150+x,90+x
  176.   NEXT x
  177.   FOR x=0 TO 60 STEP 0.5
  178.     PLOT 180-x,120
  179.   NEXT x
  180.   FOR x=0 TO 60 STEP 0.5
  181.     PLOT 120+x,120+x
  182.   NEXT x
  183.   FOR x=0 TO 60 STEP 0.5
  184.     PLOT 180,180-x
  185.   NEXT x
  186.   FOR x=0 TO 60 STEP 0.5
  187.     PLOT 180-x,120+x
  188.   NEXT x
  189.   COLOR 3                       ! rot
  190.   LINE 90,150,120,120
  191.   LINE 90,150,120,180
  192.   LINE 120,180,150,210
  193.   LINE 150,210,180,180
  194.   LINE 180,180,210,150
  195.   LINE 180,120,210,150
  196. RETURN
  197. PROCEDURE taste                 ! ein Zeichen von der Tastatur holen
  198.   CLR x%                        ! Steuerzeichen löschen
  199.   CLR mausk%
  200.   CLR mausx%                    ! Mausspalte löschen
  201.   CLR mausy%                    ! Mauszeile löschen
  202.   WHILE x%=0 AND MOUSEK=0
  203.     x$=INKEY$                   ! Zeichen von Tastatur
  204.     x%=ASC(x$)                  ! ASCII-Wert für Auswertung
  205.   WEND
  206.   IF MOUSEK<>0 THEN             ! linke Maustaste
  207.     mausx%=MOUSEX               ! ja, dann Spalte = mausx
  208.     mausy%=MOUSEY               ! Zeile = mausy
  209.     mausk%=MOUSEK               ! Maustaste
  210.   ENDIF
  211. RETURN
  212. PROCEDURE tastendruck
  213.   PRINT AT(4,28);SPACE$(34);
  214.   PCOLOR 5,0
  215.   PRINT AT(4,28);" Weiter mit Taste oder Mausklick."
  216.   taste
  217.   PCOLOR 1,0
  218.   PRINT AT(4,28);SPACE$(32)
  219. RETURN
  220. PROCEDURE zeichnen              ! Zeichenfeld zeichnen
  221.   programmkopf
  222.   COLOR 2
  223.   PBOX 225,175,300,200
  224.   COLOR 3
  225.   BOX 225,175,300,200
  226.   COLOR 3
  227.   BOX 226,176,299,199
  228.   PCOLOR 1,2
  229.   PRINT AT(30,24);"Abbruch"     ! Abbruchbox
  230.   '                               Punkte auf den Bildschirm zeichnen
  231.   CIRCLE 150,40,2
  232.   CIRCLE 150,200,2
  233.   CIRCLE 60,120,2
  234.   CIRCLE 240,120,2
  235.   CIRCLE 100,80,2
  236.   CIRCLE 150,120,2
  237.   CIRCLE 100,160,2
  238.   CIRCLE 200,160,2
  239.   CIRCLE 200,80,2
  240.   mauss                         ! zur Zeichenroutine
  241. RETURN
  242. PROCEDURE init                  ! Bildschirm und Fenster öffnen
  243.   DIM menue$(20)
  244.   breite%=320                   ! Screenbreite
  245.   hoehe%=256                    ! Screenhöhe
  246.   ebenen%=3                     ! 3 Bitplanes
  247.   OPENS 1,0,0,breite%,hoehe%,ebenen%,&H0
  248.   OPENW #1,0,0,breite%,hoehe%,&H18,&H1800,1
  249.   farben.setzen                 ! Farbpalette setzen
  250. RETURN
  251. PROCEDURE farben.setzen         ! Farbpalette setzen
  252.   SETCOLOR 0,5,5,5              ! grau statt blau
  253.   SETCOLOR 1,15,15,15           ! weiß bleibt
  254.   SETCOLOR 2,0,0,0              ! schwarz erhalten
  255.   SETCOLOR 3,15,5,0             ! rot bleibt
  256.   SETCOLOR 4,10,10,10           ! hellgrau inverse Farbe im Filerequester
  257.   SETCOLOR 5,15,15,0            ! gelb
  258.   SETCOLOR 6,0,0,0              ! schwarz = Inverse Farbe im Filerequester
  259. RETURN
  260. REM                             ! damit der Interpreter beim Kopieren nicht
  261. REM                             ! abstürzt
  262.